// lcd_2004a.h
#ifndef LCD_2004A_H
#define LCD_2004A_H

#include <stdint.h>
#include "esp_err.h"

#ifdef __cplusplus
extern "C" {
#endif

//// LCD命令
//#define LCD_CLEARDISPLAY 0x01
//#define LCD_RETURNHOME 0x02
//#define LCD_ENTRYMODESET 0x04
//#define LCD_DISPLAYCONTROL 0x08
//#define LCD_CURSORSHIFT 0x10
//#define LCD_FUNCTIONSET 0x20
//#define LCD_SETCGRAMADDR 0x40
//#define LCD_SETDDRAMADDR 0x80

// 显示模式枚举
typedef enum {
    LCD_MODE_NORMAL = 0,      // 正常模式：4行小字
} lcd_mode_t;

// 初始化LCD
esp_err_t lcd_init(uint8_t rows, uint8_t addr);
void lcd_clear(void);
void lcd_set_cursor(uint8_t col, uint8_t row);
void lcd_display_line(uint8_t row, const char *str);
void lcd_set_mode(lcd_mode_t mode);
void lcd_backlight_on(void);
void lcd_backlight_off(void);
// 获取当前行数
uint8_t lcd_get_rows(void);
// 发送字符串到LCD
void lcd_send_string(const char *str) ;
// 更改LCD行数
esp_err_t lcd_change_rows(uint8_t rows) ;
#ifdef __cplusplus
}
#endif
#endif // LCD_2004A_H